C#でSQLiteを使うなら、Dapperは最速で軽量なORMです。 Entity Framework Core よりも圧倒的に軽く、業務アプリや小規模ツールと相性抜群。 この記事では、SQLite × Dapper の最小構成で動くCRUDをまとめています。
この記事でわかること
・SQLite × Dapper の最速セットアップ
・INSERT / UPDATE / DELETE / SELECT の実装
・モデルクラスの作り方
・パラメータ化の安全な書き方
・業務アプリでのベストプラクティス
・SQLite × Dapper の最速セットアップ
・INSERT / UPDATE / DELETE / SELECT の実装
・モデルクラスの作り方
・パラメータ化の安全な書き方
・業務アプリでのベストプラクティス
1. 必要なNuGetパッケージ
- Dapper
- Microsoft.Data.Sqlite
- SQLitePCLRaw.bundle_e_sqlite3
この3つでOK。 .NET 10 でも最も安定して動く組み合わせです。
2. モデルクラスを作る
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public int? Age { get; set; }
}
3. 接続の基本コード
using Microsoft.Data.Sqlite;
using Dapper;
var connectionString = "Data Source=sample.db";
using var connection = new SqliteConnection(connectionString);
connection.Open();
4. SELECT(一覧取得)
var users = connection.Query<User>(
"SELECT Id, Name, Age FROM Users"
).ToList();
foreach (var u in users)
{
Console.WriteLine($"{u.Id}, {u.Name}, {u.Age}");
}
ポイント
- Dapperはモデルに自動マッピングしてくれる
- SELECTは Query<T> を使う
5. INSERT(追加)
var sql = "INSERT INTO Users (Name, Age) VALUES (@Name, @Age)";
connection.Execute(sql, new {
Name = "Taro",
Age = 25
});
ポイント
- Execute() は INSERT/UPDATE/DELETE に使う
- 匿名オブジェクトでパラメータを渡せる
6. UPDATE(更新)
var sql = "UPDATE Users SET Age = @Age WHERE Id = @Id";
connection.Execute(sql, new {
Age = 30,
Id = 1
});
ポイント
- WHERE を忘れると全件更新になるので注意
7. DELETE(削除)
var sql = "DELETE FROM Users WHERE Id = @Id";
connection.Execute(sql, new {
Id = 1
});
8. WHERE句付きのSELECT(検索)
var users = connection.Query<User>(
"SELECT * FROM Users WHERE Age > @Age",
new { Age = 20 }
).ToList();
ポイント
- パラメータは匿名オブジェクトで安全に渡せる
- SQLインジェクション対策も自動でOK
9. 1件取得(QueryFirst / QuerySingle)
var user = connection.QueryFirstOrDefault<User>(
"SELECT * FROM Users WHERE Id = @Id",
new { Id = 1 }
);
10. 業務アプリでのベストプラクティス
- Dapperは軽量で高速 → 小規模〜中規模アプリに最適
- SQLは必ずパラメータ化する
- 大量データは LIMIT / OFFSET を使う
- DBファイルは Program Files に置かない(権限問題)
- バックアップはファイルコピーでOK(SQLiteの強み)
まとめ:SQLite × Dapper は最速で実務向け
- CRUDが数行で書ける
- モデルに自動マッピングされて扱いやすい
- 軽量で高速 → 業務アプリと相性抜群
- SQLをそのまま書けるので学習コストが低い
C#で軽量DBアプリを作るなら、 SQLite × Dapper は最速で実務向けの最適解です。 この記事をベースに、あなたのアプリに組み込んでみてください。